﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Entities;
using Cesave.Domain.Core;
using System.Collections;

namespace Cesave.Domain.PermisosModule.Contracts.CultivosFechas
{
    /// <summary>
    /// Contrato del repositorio de fechas de siembra.
    /// </summary>
    public interface ICultivosFechaRepository
        : IRepositoryEx<CultivosFecha>
    {
        /// <summary>
        /// Encuentra las fechas de cultivo de acuerdo al cultivo, ciclo y junta
        /// indicados
        /// </summary>
        /// <param name="cultivoSpecification">
        /// Especificación de búsqueda por cultivo.
        /// </param>
        /// <param name="cicloSpecification">
        /// Especificación de búsqueda por ciclo.
        /// </param>
        /// <param name="juntaSpecification">
        /// Especificación de búsqueda por junta.
        /// </param>
        /// <returns></returns>
        IEnumerable<CultivosFecha> FindCultivosFechasByCultivoAndCicloAndJunta(
            CultivosFechasByCultivoSpecification cultivoSpecification,
            CultivosFechasByCicloSpecification cicloSpecification,
            CultivosFechasByJuntaSpecification juntaSpecification
        );

        /// <summary>
        /// Encuentra las fechas de siembra para expedición.
        /// </summary>
        /// <param name="cultivoSpecification"></param>
        /// <param name="cicloSpecification"></param>
        /// <param name="juntaSpecification"></param>
        /// <param name="fromDate"></param>
        /// <param name="toDate"></param>
        /// <returns></returns>
        IEnumerable<CultivosFecha> FindCultivosFechasForExpedicion(
            CultivosFechasByCultivoSpecification cultivoSpecification,
            CultivosFechasByCicloSpecification cicloSpecification,
            CultivosFechasByJuntaSpecification juntaSpecification,
            DateTime fromDate,
            DateTime toDate
        );

    }
}
